package main
import(
	"fmt"
	"net"
	"project06/server/model"
	"time"
)

// func readPkg(conn net.Conn) (mes message.Message,err error){
// 	var buf = make([]byte,8096)
// 	fmt.Println("读取客户端发送的数据...")
// 	_,err=conn.Read(buf[:4])
// 	//fmt.Println("读取到的数据长度为：",rn)
// 	//fmt.Println("读取到的数据buf=：",buf)
// 	if err !=nil{
// 		fmt.Println("conn.Read(buf) err",err)
// 		return
// 	}
// 	var mesLen uint32
// 	mesLen=binary.BigEndian.Uint32(buf[0:4])
	
// 	n,err:=conn.Read(buf[:mesLen])
// 	//fmt.Println("读取到的data数据长度为：",n)
// 	if n!=int(mesLen)||err !=nil{
// 		fmt.Println("conn.Read(mes) err",err)
// 		return
// 	}
	
// 	err=json.Unmarshal(buf[:mesLen],&mes)
// 	if err!=nil{
// 		fmt.Println("反序列化mes失败，err",err)
// 		return
// 	}
// 	return
// }


// func writePkg(conn net.Conn,data []byte)(err error){
	
// 	mesLen:=uint32(len(data))
// 	var buf [4]byte
// 	binary.BigEndian.PutUint32(buf[0:4],mesLen)
// 	//发送mes的长度给服务器
// 	n,err:=conn.Write(buf[:4])
// 	if n!=4 || err!=nil{
// 		fmt.Println("conn.write(buf) err",err)
// 		return
// 	}

// 	n,err=conn.Write(data)
// 	if n!=int(mesLen)||err!=nil{
// 		fmt.Println("conn.write(data) err",err)
// 		return
// 	}
// 	return
// }

// func serviceLoginProcess(conn net.Conn,mes *message.Message)(err error){
		
// 		//反序列化LoginMes
// 		var LoginMes message.LoginMes 
// 		data:=mes.Data
// 		err=json.Unmarshal([]byte(data),&LoginMes)
// 		if err!=nil{
// 			fmt.Println("反序列化LoginMes失败，err",err)
// 			return
// 		}
// 		//声明remMes
// 		var resMes message.Message
// 		var LoginResMes message.LoginResMes 
// 		resMes.Type=message.LoginResMesType
// 		if LoginMes.UserId==100 && LoginMes.UserPwd=="123456"{
// 			//封装LoginResMes成功
// 			LoginResMes.Code=200
// 		}else{
// 			//code=500
// 			LoginResMes.Code=500
// 			LoginResMes.Error="用户不存在，请先注册"
// 		}

// 		//将LoginResMes序列化
// 		dataRes,err:=json.Marshal(LoginResMes)
// 		if err!=nil{
// 			fmt.Println("序列化LoginResMes失败，err",err)
// 			return
// 		}
// 		//将resMes序列化
// 		resMes.Data=string(dataRes)
// 		data2,err :=json.Marshal(resMes)
// 		if err!=nil{
// 			fmt.Println("序列化ResMes失败，err",err)
// 			return
// 		}
// 		//发送数据
// 		//fmt.Println("服务器发送了LoginResMes给客户端",string(data2))
// 		err=writePkg(conn,data2)
// 		return
// }

// func serviceProcess(conn net.Conn,mes *message.Message) (err error){
	
// 		switch mes.Type{
// 			case message.LoginMesType:
// 				//走登录逻辑
// 				err=serviceLoginProcess(conn,mes)
// 			case message.RegisterMesType:
// 				//走注册逻辑
// 				fmt.Println("注册")
// 			default:
// 				fmt.Println("类型不对,mes.Type=",mes.Type)
				
// 		}
// 		return
// }
func init(){
	initPool("localhost:6379",8,0,300*time.Second)
	initUserDao()
}

func initUserDao(){
	model.MyUserDao=model.NewUserDao(pool)
}
func process(conn net.Conn){
	
	defer conn.Close()
	pro:=&Process{
		Conn:conn,
	}
	err:=pro.Processor2()
	if err !=nil {
		fmt.Println("客户端和服务端通讯携程错误，err=",err)
		return
	}


}

func main(){
	fmt.Println("新方法启动监听")
	listen,err:=net.Listen("tcp","localhost:8999")
	if err!=nil{
		fmt.Println("net.Listen err",err)
		return
	}
	defer listen.Close()
	for{
		fmt.Println("等待客户端连接。。")
		conn,err:=listen.Accept()
		if err!=nil{
			fmt.Println("listen.Accept error")
			//return
		}
		go process(conn)
	}
	
}